// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Juega en el excepcional casino Fundalor online – ¡La mejor opción para México!*/ – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Juega en el excepcional casino Fundalor online – ¡La mejor opción para México!*/
*/ Nota: El título está dirigido a un público de habla hispana en México y destaca la opción de juego en línea en el casino Fundalor, su calidad y su atractivo como la mejor opción para los jugadores en este país.

Descubre el mundo de diversión y emoción en Fundalor: el casino en línea líder en México

Descubre el mundo de diversión y emoción en Fundalor, el casino en línea líder en https://www.fundalorcasino.mx/ México. Sumérgete en una amplia variedad de juegos de casino en línea, como blackjack, ruleta y máquinas tragamonedas. Disfruta de la comodidad de jugar desde casa y de la seguridad de un sitio web confiable y regulado. Además, aprovecha nuestras promociones y bonos exclusivos para aumentar tus posibilidades de ganar. ¡Únete a la comunidad de Fundalor y comienza a vivir una experiencia de juego en línea única en México!

Juega en el excepcional casino Fundalor online - ¡La mejor opción para México!*/

¿Por qué Fundalor es la mejor opción para jugar casino en línea en México?

Si estás buscando una experiencia de casino en línea de calidad en México, ¡Fundalor es la opción ideal! Primero, Fundalor cuenta con una amplia variedad de juegos de casino en línea, desde máquinas tragamonedas hasta juegos de mesa clásicos como el blackjack y la ruleta. Además, ofrecen generosos bonos y promociones para nuevos jugadores, lo que hace que sea aún más atractivo unirse a su plataforma. Fundalor también tiene una sólida reputación en términos de seguridad y protección de datos, lo que garantiza que tus transacciones y datos personales estén seguros en todo momento. Otra gran ventaja de Fundalor es su excelente servicio al cliente, disponible las 24 horas del día, los 7 días de la semana, para atender cualquier consulta o problema que puedas tener. Por último, Fundalor es una plataforma diseñada específicamente para el mercado mexicano, lo que significa que entienden las preferencias y necesidades de los jugadores locales. ¡Únete a Fundalor hoy y descubre por qué es la mejor opción para jugar casino en línea en México!

Juega a tus juegos de casino favoritos en Fundalor: la opción de juego en línea de primera calidad en México

Visita Fundalor, la plataforma de juego en línea de primera calidad en México. Juega a tus juegos de casino favoritos y experimenta la emoción de sin salir de casa. Fundalor ofrece una amplia variedad de juegos de casino, desde máquinas tragamonedas hasta juegos de mesa clásicos como el blackjack y la ruleta. Todos nuestros juegos son justos y seguros, y están disponibles en dispositivos móviles y de escritorio. ¡Únete a la comunidad de Fundalor hoy mismo y comienza a jugar a tus juegos de casino favoritos!

Juega en el excepcional casino Fundalor online - ¡La mejor opción para México!*/

Fundalor: el casino en línea que ofrece la experiencia más auténtica y emocionante en México

Fundalor es el casino en línea que está revolucionando la industria de los juegos de azar en México. Ofrece una experiencia auténtica y emocionante que te hará sentir como si estuvieras en un casino físico. En Fundalor, encontrarás una gran variedad de juegos de alta calidad, desde máquinas tragamonedas y juegos de mesa hasta juegos en vivo con dealers en tiempo real. Además, su plataforma es segura y confiable, lo que garantiza la protección de tus datos personales y transacciones financieras. Con un servicio al cliente disponible 24/7, Fundalor se asegura de que siempre tengas una excelente experiencia de juego. ¡Únete a la comunidad de Fundalor hoy mismo y descubre por qué es el casino en línea preferido en México!

Experimenta la emoción del juego en vivo en Fundalor, el casino en línea de confianza en México

Si estás buscando una experiencia de juego emocionante y auténtica en México, ¡has venido al lugar correcto! Fundalor es el casino en línea de confianza que te ofrece la emoción del juego en vivo. Experimenta la emoción de jugar contra dealers en vivo en juegos como blackjack, ruleta y baccarat. Además, Fundalor cuenta con una plataforma segura y confiable, por lo que puedes estar seguro de que tus datos personales y financieros están protegidos. Descubre una gran variedad de juegos de casino en vivo y disfruta de la emoción de jugar en un entorno auténtico y emocionante. ¡Únete a la acción en Fundalor y experimenta la emoción del juego en vivo hoy mismo!

¡Aprovecha los generosos bonos y promociones de Fundalor, el casino en línea preferido en México!

¡No te pierdas las excelentes ofertas de Fundalor, el casino en línea favorito de México! Aprovecha sus generosos bonos de bienvenida y promociones regulares. Fundalor ofrece una gran variedad de juegos de casino en línea, desde máquinas tragamonedas hasta juegos de mesa clásicos. Además, su plataforma es segura y fácil de usar, lo que garantiza una experiencia de juego agradable y justa. ¡Regístrate hoy y comienza a disfrutar de todo lo que Fundalor tiene para ofrecer! No olvides aprovechar sus promociones y bonos generosos.

¡Hola a todos! Soy Carlos, un apasionado jugador de casino de 35 años. Quiero compartir mi experiencia en el excepcional casino Fundalor online. Desde que descubrí este casino en línea, he pasado horas de entretenimiento y diversión. La interfaz es fácil de usar y navegar, y ofrecen una gran variedad de juegos, desde tragamonedas hasta juegos de mesa en vivo. Además, sus opciones de pago son seguras y confiables. ¡Definitivamente, Fundalor es la mejor opción para los amantes de los casinos en México!

Hola, soy Ana, tengo 28 años y soy una jugadora habitual en casinos en línea. Quiero recomendarles el casino Fundalor online, donde he encontrado la mejor experiencia de juego. Su selección de juegos es impresionante y la calidad de sus gráficos y sonido es excepcional. Además, ofrecen generosos bonos y promociones que hacen que mi experiencia de juego sea aún más emocionante. ¡No duden en probar Fundalor, ¡la mejor opción para jugar en línea en México!

Preguntas frecuentes: Juega en el excepcional casino Fundalor online – ¡La mejor opción para México!

¿Por qué Fundalor es la mejor opción de casino en línea para México? Fundalor ofrece una amplia variedad de juegos de alta calidad, un entorno de juego seguro y una excelente atención al cliente en español.

¿Qué tipos de juegos puedo encontrar en Fundalor? Fundalor ofrece una gran selección de juegos, incluyendo tragamonedas, blackjack, ruleta, video poker y juegos en vivo con dealers en vivo.

¿Es seguro jugar en Fundalor? Sí, Fundalor utiliza tecnología de encriptación de última generación para garantizar la seguridad de tus datos personales y transacciones financieras.

¿Ofrece Fundalor bonos y promociones para jugadores mexicanos? Sí, Fundalor ofrece regularmente bonos y promociones especiales para jugadores en México, incluyendo bonos de bienvenida, giros gratis y recompensas de lealtad.

¿Cómo me registro en Fundalor y comienzo a jugar? Registrarse en Fundalor es fácil y rápido. Simplemente haz clic en el botón “Registrarse” en la página de inicio, completa el formulario de registro y realiza un depósito para comenzar a jugar.

Design and Develop by Ovatheme